/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package documentadorrepositorio.util;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;
import jxl.Workbook;

/**
 *
 * @author André
 */
public class IOUtil {
    public static List<String> obtemConteudoArquivoTexto(File arquivo) throws FileNotFoundException, IOException
    {
        List<String> conteudoArquivo = new ArrayList<>();
        
        FileReader leitorArquivo = new FileReader(arquivo);
        BufferedReader bufferLeitor = new BufferedReader(leitorArquivo);
        
        String linha = bufferLeitor.readLine();

        while(linha != null) 
        {
            if(!linha.isEmpty())
            {
                conteudoArquivo.add(linha);
            }
            linha =bufferLeitor.readLine();
        }
        bufferLeitor.close();
        return conteudoArquivo;
    }
    
    public static void criaArquivoTexto(String nomeArquivo, List<String> conteudoArquivo) throws IOException
    {
        File arquivoPadrao = new File(nomeArquivo);
        arquivoPadrao.createNewFile();
        OutputStreamWriter escritorArquivo = new OutputStreamWriter(new FileOutputStream(arquivoPadrao), "UTF-8");
        for(String linha : conteudoArquivo)
        {
            escritorArquivo.write(linha + "\r\n");
        }
        escritorArquivo.flush();
        escritorArquivo.close();
    }
    
    public static Workbook obtemWorkbook(byte[] dadosArquivo)
    {
        try
        {
            File tmpFile = new File("mtz.xls");
            if(tmpFile.exists())
                tmpFile.delete();
            
            FileOutputStream fos = new FileOutputStream(tmpFile);
            fos.write(dadosArquivo);
            fos.flush();
            fos.close();
            
            Workbook planilha = Workbook.getWorkbook(tmpFile);
            return planilha;
        }
        catch(Exception ex)
        {
            return null;
        }
    }
    
    /*
    public static String obtemString(byte[] bytesArquivoTexto)
    {
        try
        {
            File arqTemp = new File("temp.data");
            if(arqTemp.exists())
                arqTemp.delete();
            
            FileOutputStream fos = new FileOutputStream(arqTemp);
            fos.write(bytesArquivoTexto);
            fos.flush();
            fos.close();
            
            BufferedReader buffReader = new BufferedReader(new UnicodeReader(new FileInputStream(arqTemp), "UTF-8"));

            StringBuilder sb = new StringBuilder();
            String linha = buffReader.readLine();
            
            while(linha != null)
            {
                sb.append(linha);
                sb.append("\r\n");
                linha = buffReader.readLine();
            }
            
            buffReader.close();
            arqTemp.delete();
            
            return sb.toString();
        }
        catch(Exception ex)
        {
            return "";
        }
    }*/
    
    public static String obtemString (byte[] valor) throws Exception
    {
        //List<Character> chars = new ArrayList<>();
        char[] ch = new char[valor.length];
        for (int i = 0; i < ch.length; i++)
        {
            if(valor[i] == -55)
                {
                    ch[i] =  'É';
                }
            else if(valor[i] == -31)
                {
                    ch[i] =  'á';
                }else if(valor[i] == -23)
                {
                    ch[i] = 'é';
                }
                else if(valor[i] == -19)
                {
                    ch[i] = 'í';
                }
                else if(valor[i] == -13)
                {
                    ch[i] = 'ó';
                }
                else if(valor[i] == -6)
                {
                    ch[i] = 'ú';
                }
                else if(valor[i] == -32)
                {
                    ch[i] = 'à';
                }
                else if(valor[i] == -24)
                {
                    ch[i] = 'è';
                }
                else if(valor[i] == -20)
                {
                    ch[i] = 'ì';
                }
                else if(valor[i] == -14)
                {
                    ch[i] = 'ò';
                }
                else if(valor[i] == -7)
                {
                    ch[i] = 'ù';
                }
                else if(valor[i] == -25)
                {
                    ch[i] = 'ç';
                }
                else if(valor[i] == -29)
                {
                    ch[i] = 'ã';
                }
                else if(valor[i] == -11)
                {
                    ch[i] = 'õ';
                }
                else if(valor[i] == -109)
                {
                    ch[i] = '“';
                }
                else if(valor[i] == -108)
                {
                    ch[i] = '”';
                }
                else
                    ch[i] = (char)valor[i];
        }
        
        String s = "";
        for (int i = 0; i < ch.length; i++)
        {
            s += ch[i];
        }
        return s;
    }
    
    private static char obtemValor(int charValue)
    {
        if(charValue == 97)
        {
            return 'a';
        }
        else
        {
            return 'b';
        }
    }
}
